package com.jhy.new2025.TwoArray;

/**
 * 给你一幅由 N × N 矩阵表示的图像，其中每个像素的大小为 4 字节。请你设计一种算法，将图像旋转 90 度。
 * <p>
 * 不占用额外内存空间能否做到？
 */
public class Rotate {
    public void rotate(int[][] matrix) {

        // 先按照对角线中心对称
        int length = matrix.length;
        for (int i = 0; i < length - 1; i++) {
            for (int j = i + 1; j < length; j++) {
                int temp = matrix[i][j];
                matrix[i][j] = matrix[j][i];
                matrix[j][i] = temp;
            }
        }

        for (int i = 0; i < length; i++) {
            for (int j = 0; j < i; j++) {
                int temp = matrix[i][j];
                matrix[i][j] = matrix[j][i];
                matrix[j][i] = temp;
            }
        }

        // 然后按照行进行翻转
        for (int i = 0; i < length; i++) {
            int[] res = matrix[i];
            for (int j = 0; j < res.length / 2; j++) {
                int first = res[j];
                res[j] = res[res.length - 1 - j];
                res[res.length - 1 - j] = first;
            }
        }
    }
}
